package com.meepo.basic.components

import android.content.Context
import com.meepo.basic.R
import com.meepo.basic.schema.location.Location
import com.meepo.sdk.utils.GsonUtils
import com.meepo.sdk.utils.Utils
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*

object LocationManager {

    private var provinces: List<Location>? = null
    private var options2Items: ArrayList<ArrayList<String>>? = null
    private var options3Items: ArrayList<ArrayList<ArrayList<String>>>? = null

    private fun parse(context: Context) {

        val stringBuilder = StringBuilder()
        val bf = BufferedReader(InputStreamReader(context.resources.openRawResource(R.raw.province)))
        bf.forEachLine { stringBuilder.append(it) }

        provinces = com.meepo.sdk.utils.GsonUtils.fromJsonArray(stringBuilder.toString(), Location::class.java)

        //遍历省份
        provinces?.forEachIndexed { index, provice ->

            val cityList = ArrayList<String>() //该省的城市列表（第二级）
            val areaListList = ArrayList<ArrayList<String>>() //该省的所有地区列表（第三极）

            provice.cityList.forEachIndexed { index, city ->
                cityList.add(city.name)

                val areaList = ArrayList<String>() //该城市的所有地区列表

                city.area.forEachIndexed { index, a ->

                    areaList.add(a)
                }

                areaListList.add(areaList)
            }

            options2Items?.add(cityList)

            options3Items?.add(areaListList)
        }


//        for (var i = 0 i < jsonBean . size; i++) {//遍历省份
//            //遍历省份
//            val cityList = ArrayList<String>() //该省的城市列表（第二级）
//
//            val province_AreaList =
//                ArrayList<ArrayList<String>>() //该省的所有地区列表（第三极）
//
//
//            for (c in 0 until jsonBean.get(i).getCityList().size()) { //遍历该省份的所有城市
//                val cityName: String = jsonBean.get(i).getCityList().get(c).getName()
//                cityList.add(cityName) //添加城市
//                val city_AreaList = ArrayList<String>() //该城市的所有地区列表
//
//                //如果无地区数据，建议添加空字符串，防止数据为null 导致三个选项长度不匹配造成崩溃
//                /*if (jsonBean.get(i).getCityList().get(c).getArea() == null
//                        || jsonBean.get(i).getCityList().get(c).getArea().size() == 0) {
//                    city_AreaList.add("");
//                } else {
//                    city_AreaList.addAll(jsonBean.get(i).getCityList().get(c).getArea());
//                }*/city_AreaList.addAll(jsonBean.get(i).getCityList().get(c).getArea())
//                province_AreaList.add(city_AreaList) //添加该省所有地区数据
//            }
//
//            /**
//             * 添加城市数据
//             */
//            /**
//             * 添加城市数据
//             */
//            options2Items.add(cityList)
//
//            /**
//             * 添加地区数据
//             */
//            /**
//             * 添加地区数据
//             */
//            options3Items.add(province_AreaList)
    }


    fun getProvinces(): List<Location> {
        if (provinces != null) return provinces!!
        parse(com.meepo.sdk.utils.Utils.getApp())
        return provinces!!
    }

    fun getCities(): List<List<String>> {
        if (options2Items != null) return options2Items!!
        parse(com.meepo.sdk.utils.Utils.getApp())
        return options2Items!!
    }

    fun getAreas(): List<List<List<String>>> {
        if (options3Items != null) return options3Items!!
        parse(com.meepo.sdk.utils.Utils.getApp())
        return options3Items!!
    }
}